package tree;

import java.util.*;
import java.util.function.Consumer;

/**
 * @ Author     ：侯耀祖
 * @ Description：
 */
public class rightSideView {
//    List<List<Integer>> result = new ArrayList<>();
//    public List<Integer> rightSideView(TreeNode root) {
//        dfsArray(root, 0);
//        return result.stream()
//                .map(integers -> integers.get(integers.size()-1))
//                .toList();
//
//    }
//    public void dfsArray(TreeNode node, Integer deep){
//        if (node == null){
//            return;
//        }
//        deep++;
//        if (result.size() < deep){
//            ArrayList<Integer> item = new ArrayList<>();
//            result.add(item);
//        }
//        result.get(deep-1).add(node.val);
//        dfsArray(node.left, deep);
//        dfsArray(node.right, deep);
//    }
    public List<Integer> rightSideView(TreeNode root){
        List<Integer> result = new ArrayList<>();
        Deque<TreeNode> que = new LinkedList<>();
        if (root == null){
            return result;
        }
        que.offerLast(root);
        while (!que.isEmpty()){
            int leveSize = que.size();
            for (int i = 0; i < leveSize; i++) {
                TreeNode poll = que.pollFirst();
                if (poll.left != null){
                    que.offerLast(poll.left);
                }
                if (poll.right != null){
                    que.offerLast(poll.right);
                }
                if (i == leveSize -1){
                    result.add(poll.val);
                }
            }
        }
        return result;
    }
}
